package io.finer.erp.jeecg.jolimark.print;

import io.finer.erp.jeecg.jolimark.enums.PrinterEnum;
import io.finer.erp.jeecg.jolimark.model.PrintRequestModel;

/**
 * HTML相关打印
 * 
 * @author Jolimark
 *
 */
public class HTMLPrint extends AbstractPrint {

	/**
	 * 打印映美规范HTML页面-传URL地址
	 * <p>
	 * 适用场景：适用于票据页面映美规范的餐饮、超市等小票打印
	 * </p>
	 * <p>
	 * 适用机型：MCP-58、MCP-330、MCP-350、MCP-360、MCP-230、CLP-180、CLQ-200、CLQ-200F
	 * </p>
	 * 
	 * @param printerEnum 打印机型号
	 * @param url         打印URL
	 * @param paperHeight 打印纸高度
	 */
	public void printHtmlUrl(PrinterEnum printerEnum, String url, int paperHeight) {
		if (printerEnum.getType() == 2) {
			Out("错误：不支持CFP系列打印机");
			return;
		}
		PrintRequestModel model = buildRequest(printerEnum);
		model.setPaperHeight(paperHeight);
		model.setBillContent(url);

		print("PrintHtmlUrl", model);
	}

	/**
	 * 打印映美规范HTML页面-传HTML代码
	 * <p>
	 * 适用场景：在一些特定应用中，客户无法生成HTML页面URL，可以传HTML源代码，由映美服务器代为生成打印
	 * </p>
	 * <p>
	 * 适用机型：MCP-58、MCP-330、MCP-350、MCP-360、MCP-230、CLP-180、CLQ-200、CLQ-200F
	 * </p>
	 * 
	 * @param printerEnum 打印机型号
	 * @param htmlCode    打印HTML代码
	 * @param paperHeight 打印纸高度
	 */
	public void printHtmlCode(PrinterEnum printerEnum, String htmlCode, int paperHeight) {
		if (printerEnum.getType() == 2) {
			Out("错误：不支持CFP系列打印机");
			return;
		}
		PrintRequestModel model = buildRequest(printerEnum);
		model.setPaperHeight(paperHeight);
		model.setBillContent(htmlCode);

		print("PrintHtmlCode", model);
	}

	/**
	 * 打印标准规范HTML页面-传HTML代码
	 * <p>
	 * 适用场景：HTML页面有标准规范表格和标准规范排版样式的情况，以黑白双色打印
	 * </p>
	 * <p>
	 * 适用机型：CLP-180、CLQ-200、CLQ-200F、CFP-535、CFP-536、CFP-820
	 * </p>
	 * 
	 * @param printerEnum 打印机型号
	 * @param htmlCode    打印HTML代码
	 * @param paperHeight 打印纸高度
	 */
	public void printRichHtmlCode(PrinterEnum printerEnum, String htmlCode, int paperHeight) {
		if (printerEnum.getType() == 1) {
			Out("错误：不支持MCP系列打印机");
			return;
		}
		PrintRequestModel model = buildRequest(printerEnum);
		model.setPaperHeight(paperHeight);
		model.setBillContent(htmlCode);

		print("PrintRichHtmlCode", model);
	}

	/**
	 * 打印标准规范HTML页面-传URL
	 * <p>
	 * 适用场景：适用于HTML页面含有标准规范排版样式与表格的情况，以黑白双色打印
	 * </p>
	 * <p>
	 * 适用机型：CLP-180、CLQ-200、CLQ-200F、CFP-535、CFP-536、CFP-820
	 * </p>
	 * 
	 * @param printerEnum 打印机型号
	 * @param url         打印URL
	 * @param paperHeight 打印纸高度
	 */
	public void printHtmlToPic(PrinterEnum printerEnum, String url, int paperHeight) {
		if (printerEnum.getType() == 1) {
			Out("错误：不支持MCP系列打印机");
			return;
		}
		PrintRequestModel model = buildRequest(printerEnum);
		model.setPaperHeight(paperHeight);
		model.setBillContent(url);

		print("PrintHtmlToPic", model);
	}

	/**
	 * 打印标准规范HTML页面-转灰度图
	 * <p>
	 * 适用场景：此接口适用于页面中含有图片需要打印的情况，以多层级灰度打印，仅适用于热敏打印机
	 * </p>
	 * <p>
	 * 适用机型：CLP-180、CLQ-200、CLQ-200F、CFP-535、CFP-536、CFP-820
	 * </p>
	 * 
	 * @param printerEnum 打印机型号
	 * @param url         打印URL
	 * @param paperHeight 打印纸高度
	 */
	public void printHtmlToGrayPic(PrinterEnum printerEnum, String url, int paperHeight) {
		if (printerEnum.getType() == 1) {
			Out("错误：不支持MCP系列打印机");
			return;
		}
		PrintRequestModel model = buildRequest(printerEnum);
		model.setPaperHeight(paperHeight);
		model.setBillContent(url);

		print("PrintHtmlToGrayPic", model);
	}
}
